home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat06 / sad / note < prev    next >
Encoding:
Text File  |  1989-08-23  |  39.5 KB  |  1,125 lines

  1.                        S A D version MS/DOS 1.1
  2.                  SYSTEME AUTOMATIQUE de DEVELOPPEMENT
  3.                          (c) Eric Hilly
  4.                           AOUT/1991
  5.  
  6. ____________________________________________________________Présentation
  7.  
  8.  
  9.          SAD par le couplage de 2 notions, un système expert et 
  10.          une méthode de conception de programmes, est le prototype 
  11.          d'un outil destiné à aider à la résolution 
  12.          des problèmes de tests et de maintenance de l'ensemble
  13.          d'un programme.
  14.  
  15.          Dans la lignée de la programmation structurée il y a une
  16.          technique peu connue, la PSP, qui aborde ces problèmes.
  17.          (Programmation Sans Panne de la société AAF : Automatisme 
  18.          Avancé de France).
  19.  
  20.  
  21.          Pour un programmeur pratiquant la programmation structurée,
  22.          son apprentissage est simple. Quant au novice, elle constitue
  23.          un excellent moyen d'aborder la programmation.
  24.  
  25.          SAD écrit en BASIC aborde certains des principes de
  26.          la PSP, et va permettre de tester leurs utilités.
  27.  
  28. * Pourquoi le BASIC ?
  29.  
  30.          - Simplicité de mise en oeuvre, grâce à l'interpréteur.
  31.          - Simplicité de programmation du générateur de code source basic.
  32.  
  33.          Et puis SAD n'est qu'un simple test et n'a pas la prétention de
  34.          résoudre des problèmes de professionnels.
  35.  
  36. * Pourquoi une méthode de programmation et d'analyse?
  37.  
  38.          2 chiffres :
  39.          - 70% des programmeurs travaillent sur des logiciels existants.
  40.          - Il existe un nombre incompréssible de 5 à 10 fautes par millier
  41.          de lignes de code
  42.          (cf.Le Monde Informatique 13 Juillet 1987).
  43.  
  44. Donc 2 objectifs :
  45.          - Accélerer la lecture et la modification des programmes par une
  46.            standardisation des règles d'écritures du code.
  47.          - Réduire les erreurs par une bonne conception logique.
  48.  
  49. Cela tient en 2 mots: maintenance et test.
  50.  
  51.  
  52.  
  53.  
  54. Maintenance:
  55.  
  56.         Que vous soyez seul ou en équipe, re-lire un code en vue d'une
  57.         amélioration ou d'une correction qu'il soit écrit par vous ou par
  58.         un autre, pose toujours comme problème sa lisibilité et la
  59.         compréhension de son déroulement.
  60.  
  61.         Essayer de modifier un programme de plus de 1000 lignes sans
  62.         documentation adéquate, sans règles d'écriture, sans découpage
  63.         suffisant des opérations (surtout s'il n'est pas de votre cru),
  64.         devient vite un lourd travail.
  65.  
  66.         Pour une modification vous pourrez passer presque autant de temps
  67.         que la conception même du programme.
  68.  
  69.  
  70.         Donc une bonne maintenance se prépare dès la conception du projet.
  71.  
  72.  
  73. Test:
  74.  
  75.          Vérifier, avant l'écriture globale d'une application,    
  76.          son fonctionnement et avoir la preuve du bon déroulement du
  77.          prototype permet, de réduire au minimum les corrections tardives,
  78.          et donc, un gain de temps souvant significatif.
  79.  
  80.  
  81.          Un programme automatisant ces opérations lourdes à gérer     
  82.          "manuellement", enlève toute objections quant à leur utilisation.
  83.  
  84.          En l'occurence, une base de connaissance, crée avec un système
  85.          expert et représentant l'application, peut constituer le noyau
  86.          d'un tel programme.
  87.  
  88.          Une structure se réduisant bien sous forme de succèsions de règles.
  89.  
  90.          Evidement le programme présenté ne repond pas dans l'absolu 
  91.          à ses problèmes, mais c'est un début de reponse.
  92.  
  93.  
  94.  
  95. ______________________________Présentation de la Programmation Sans Pannes
  96.  
  97.  
  98.          Dans les explications qui suivent je ne décrirais que 
  99.          les parties de la PSP utilisées par SAD, pour plus de
  100.          détails procurez-vous les n° de la revue Micro-Systèmes
  101.          de Juillet à Octobre 1987.
  102.  
  103.          La PSP dépasse la démarche structuraliste. Sa démarche est basée
  104.          sur la notion d'objet. Elle définie "quelles choses fait-on ?"
  105.          et non plus "pourquoi fait-on les choses ?".
  106.  
  107.          La démarche de l'analyse se fait en 3 points:
  108.  
  109.          * Dans un problème, il existe des objets soumis à des traitements.
  110.          * En isolant et décomposant ces objets, on dégage la structure
  111.          de l'algorithme.
  112.          * Pour chaque objet dégager les traitements à effectuer sur 
  113.          l'objet, puis les conditions dans lesquelles ils sont
  114.          effectués.
  115.  
  116.  
  117.  
  118. Un programme =
  119.         - instructions qui se suivent en séquence et qui
  120.           ne contiennent aucun branchement ou rupture de
  121.           séquence.
  122.  
  123.          - instructions rompant la séquence.
  124.           2 types :
  125.             * Répétition ; c'est à dire le branchement
  126.       ramène en arrière pour ré-exécuter certaines
  127.       instructions autant de fois qu'il est nécessaire
  128.        jusqu'à ce qu'une condition soit vérifiée.
  129.       (WHILE <condition non vérifiée>...WEND)
  130.  
  131.             * Alternative ; c'est-à-dire pas de
  132.        répétition et le branchement renvoie à une autre
  133.       instruction. Dans ce cas, certaines instructions
  134.       seront exécutées ou pas, selon que la condition
  135.       associée soit vraie ou fausse.
  136.           (IF <condition> THEN...ELSE...)
  137.  
  138.       Un programme peut être composé uniquement de ces 3 éléments.
  139.       Ces éléments s'imbriquant et s'ajoutant selon les problèmes
  140.       à résoudre.
  141.  
  142.  
  143.       * En pratique et en BASIC ces structures se traduisent ainsi :
  144.       (attention, c'est une vision simplifiée de la technique)
  145.  
  146.       Les noms d'objet servent comme nom des procédures qui les
  147.       concernent, mais aussi aux variables logiques qui conditionnent 
  148.       leur fonctionnement.
  149.  
  150.  
  151. Séquence=   
  152. Appel du sous-programme:-"GOSUB nom bloc d'instructions".
  153.          Sous-programme:-"nom du bloc d'instructions:".
  154.                         -séquence d'instructions.              
  155.                         -"RETURN" retour au programme appellant.
  156.  
  157.  
  158. Répétitive=
  159. Appel de la répétitive :"GOSUB nom de la répétitive".
  160.  
  161.              Répétitive:-"WHILE condition fausse".
  162.                         -"GOSUB bloc" ,appel à la séquence d'instructions
  163.                          à exécuter.    
  164.                         -"WEND".
  165.          Sous-programme:-"nom du bloc:".
  166.                         -séquence d'instructions et détermination de 
  167.                          la condition.
  168.                         -"RETURN" retour au programme appellant.
  169.  
  170.  
  171.  
  172.  
  173. Alternative=
  174. Appel de l'alternative :"GOSUB nom de l'alternative".
  175.  
  176.             Alternative:-"GOSUB calcul de la condition de l'alternative".
  177.                     -"IF condition vraie"
  178.                     -"THEN GOSUB 1er traitement de l'alternative".
  179.                         -"ELSE GOSUB 2ième traitement de l'alternative"
  180.                         -"RETURN" retour au programme appellant.
  181.  
  182. Sous-programme de
  183. calcul de la condition :-"calcul condition:".
  184.                         - séquence de calcul.
  185.                         -"RETURN".
  186. Sous-programmes des
  187. traitements            :-"1er traitement".
  188.                         -séquence
  189.                         -"RETURN"
  190.                         -"2ième traitement".
  191.                         -séquence
  192.                         -"RETURN"
  193.  
  194.  
  195. Remarque :
  196.  
  197. Cette façon de découper un programme peut sembler fastidueuse, 
  198. mais elle permet de comprendre par couche le programme et de
  199. séparer chaque opération de manière lisible.
  200.  
  201. La PSP est une méthode très complète, la partie abordée ici 
  202. n'est que le morceau visible de l'iceberg. 
  203.  
  204.  
  205. ____________________________________________________Présentation de SAD
  206.  
  207.  
  208. Le noyau de SAD est un système expert simplifié capable d'inférences
  209. arrière et avant.
  210. Ces inférences vous permettront une fois la base de règles
  211. constituée d'éplucher votre application :
  212.  
  213.  -  de savoir pour un sous-programme quel sont ceux qu'il appelle.
  214.  -  de connaître pour un sous-programme par quel(s) autres
  215. sous-programme(s) il est appelé.
  216.  
  217.     
  218. Bref de monter ou descendre dans la structure de l'application.
  219. Le niveau 0 étant le niveau initial (celui de la 1ère
  220. règle), le niveau n la dernière décomposition d'un objet.
  221.  
  222. Pour maintenir un code, ces possibilités accèlérent la
  223. compréhension du déroulement des séquences et donc
  224. permettent une intervention plus rapide.
  225.  
  226. En plus de cette navigation, SAD génére le code source
  227. correspondant à la base de règles. 
  228.  
  229. Deux versions peuvent être générées :
  230.  
  231.  - une version pure, qui n'est que l'exacte traduction de la
  232.    base de règles.
  233.  - une version de test, qui incorpe le code nécessaire à la 
  234.    visualisation du déroulement logique du programme.
  235.  
  236.  
  237. La base de règles peut représenter qu'une partie d'une application.
  238. En sub-divisant ainsi votre travail, votre vision du projet
  239. en sera accrue.
  240.  
  241. Dans l'idéal vous ne devrez plus faire appel à votre éditeur de
  242. texte classique.
  243.  
  244. A chaque modification, c'est une règle que vous changerez
  245. (en oubliant pas de passer après par la génération
  246. pour executer le code).
  247.  
  248. _______________________________________________________Fonctionnalités
  249.  
  250.  
  251. * Sur la base de règles:
  252. - ajout, suppréssion, modification, visualisation de règles.
  253.  
  254. * Inférences:
  255. (1 condition = 1 sous-programme)
  256. - Arrière.
  257. En donnant la condition d'une règle, le programme vous donnera 
  258. les règles succéssives qui appellent celle-ci.
  259. - Avant.
  260. En donnant la condition d'une règle, le programme vous donnera
  261. les conséquences succéssives quelle implique.
  262.  
  263.  
  264.  
  265. * Les fichiers:
  266. (Vous devez donnez un nom à la base de règle. Celui-ci servira
  267. aussi comme nom du futur programme généré.)
  268. - Re-initialisation des tableaux contenant la base, chargement et
  269. sauvegarde de la base de règles.
  270.  
  271.  
  272. * Génération de code:
  273. 2 types de générations.
  274. 1/ Pur. Crée un code suivant strictement les règles saisies.
  275. 2/ Test. Rajoute le code nécessaire pour effectuer des tests
  276. sur le déroulement du programme.
  277.  
  278. En l'executant vous pourrez vérifier son fonctionnement logique.
  279.  
  280.  
  281. * Règles d'écriture de la base de connaissances:
  282. (voir simultanément l'exemple plus loin)
  283.      
  284. Il devra toujours exister une règle ayant la condition MAIN
  285. (n'importe-où dans la base).
  286. Celle-ci ayant pour conséquence(s) le programme principal.
  287.  
  288. Une règle = le nom de la séquence en prémisse, les instructions ou
  289. les séquences appellées en conséquences.
  290.  
  291. (Il faudra obligatoirement créer 1 ou 2 conséquence(s), si la 
  292. prémisse est une alternative IF..THEN..(ELSE))).
  293.  
  294. La génération s'effectue sur le disque courant.
  295.  
  296. Règles d'écriture des règles.
  297.  - si <condition> alors <consequence>
  298.                   alors      ...        8 conséquences possibles.
  299.  
  300.  - Dans une répétitive, la Condition commence par TANT QUE puis
  301. le nom de l'objet.
  302.    En Conséquence on indique le nom du bloc de séquences à executer
  303.    (Pas de TANT QUE...).
  304.  - Dans une alternative, La Condition commence par TEST puis le
  305. nom de l'objet.
  306.    En Conséquence, le 1er traitement commence de préférence
  307. par le nom de l'objet et fini par OUI, l'éventuel 2ième fini
  308. par NON (Pas de TANT QUE en Conséquence).
  309.  
  310.  - si le début d'une Conséquence commence par le caractère "*",
  311. le programme considèrera la suite de la ligne comme du code BASIC
  312. à inclure directement, tel quel, dans le source généré.
  313.   Cela remplace donc, un éditeur classique.
  314.  
  315. (voir le chapitre EXEMPLE).
  316.  
  317. Vous remarquerez qu'à chaque décomposition d'un objet il y a
  318. un appel de sous-programme (ou création d'une autre règle). 
  319. Cette décomposition permet une grande lisibilté du listing source,
  320. et une compréhension par niveau, de l'application.
  321.  
  322. Mais comme je l'ai déjà écrit, vous n'aurez plus besoin
  323. de lire un source brut. Vous pourrez passer par l'édition des règles
  324. pour gérer votre programme.
  325.  
  326. Certains tests sur la validité logique de la base de règles
  327. ne sont pas inclus (d'autres fonctions simples sont aussi absentes
  328. (impréssion des résultats de tests, de la base de règles etc...))
  329. (prochaine version de SAD).
  330. Alors faites attention à ce que vous saisissez, sinon
  331. le programme généré risque d'être qu'une sacrée salade !
  332.  
  333.  
  334.  
  335. __________________________________________________________Conclusion
  336.  
  337.  
  338. Ce programme est plus que perfectible. 
  339.  
  340. Pour améliorer son utilité il faut le reprogrammer dans
  341. un langage plus puissant, améliorer l'ergonomie, la rapidité, 
  342. le mixer avec un éditeur de texte etc...
  343.  
  344. J'accepterais favorablement toutes remarques.
  345.  
  346.                           Hilly Eric
  347.                 100, rue de L'Escalette
  348.                     59420 MOUVAUX
  349.  
  350. SAD peut être diffusé gratuitement par qui le voudra, en aucuns
  351. cas il peut en être fait une distribution ou un usage commercial 
  352. sans mon autorisation. 
  353.  
  354. Le programme SAD reste ma propriété, ainsi que le nom.
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. ______________________________________________________________Exemple
  404.  
  405.  Voici un exemple d'application. A vous de le terminer
  406.  (je suis paresseux de naissance !. D'ailleur j'aime 
  407.  tout ce qui inclus le mot AUTOMATIQUE).
  408.  
  409. ---------------------------------------------------------------------------
  410.                                 Jeu RESEAU
  411.  
  412.  
  413. * Lieu : réseau bus,tramway, metro.
  414.  
  415. Acteurs : un voyageur (le joueur).
  416. Ses adversaires (2 à 8) gérés par le programme.
  417.  
  418. But : pour le joueur, à partir d'un point du réseau rejoindre une autre
  419. station en évitant les poursuivants.
  420. Pour le programme, poursuivre le joueur et tenter par l'un des pousuivants
  421. de "l'attrapper".
  422.  
  423. Fin de partie, lorsque l'un des 2 buts est atteint.
  424.  
  425. Gain de points : si le but du joueur est atteint et proportionnellement
  426. au nombre de chasseurs.
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458. Liste des objets.
  459.  
  460. * Réseau de lignes.
  461.  
  462.  Chaque ligne est représentée par ses stations.
  463.  Chaque station est numérotée.
  464.  Pour les correspondances, il faut indiquer le n° de ligne et
  465.   le n° de la station sur cette ligne.
  466.   (c'est-à-dire: une même station peut avoir un n° différent
  467.   selon la ligne).
  468.  
  469.  Procédure indépendante de création du fichier du réseau.
  470.  Procédure de lecture du fichier dans le programme RESEAU.
  471.  
  472. * Chasseurs.
  473.   
  474.  Détermination du nombre de chasseurs.
  475.   Chaque chasseur se détermine par son n° d'ordre, sa ligne, son
  476.   n° de station.
  477.  
  478.  Détermination du point d'origine de chacun.
  479.  
  480.  Mouvement automatique de chaque chasseur selon la position du joueur.
  481.  
  482.  Si la position d'un des chasseurs est égale à celle du joueur,
  483.   c'est la fin de partie, le joueur a perdu.
  484.   (Toute rencontre entre les acteurs se fait aux stations.
  485.   Le test ne tient pas compte du sens de progrèssion des
  486.   protagonistes et donc ne rend pas compte de la réalité.
  487.   Il teste simplement le passage dans une station sur une
  488.   ligne identique.)
  489.  
  490. * Joueur.
  491.  
  492.  La position originelle du joueur se détermine de la même façon que celle
  493.   des chasseurs.
  494.  
  495.  Détermination du point à atteindre pour gagner la partie.
  496.  
  497.  Mouvement sur le réseau selon les possibilités de changement de
  498.   station.
  499.   
  500.   (Le joueur n'a connaissance de la position des poursuivants
  501.   que lorsqu'ils se trouvent sur la même ligne.)
  502.  
  503.  Si la position en cours est celle du point à atteindre, alors
  504.   le joueur a gagné et peut ajouter à son total x points calculés
  505.   selon le nombre de chasseurs.
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515. Déroulement des séquences.
  516. (vision restrictive)
  517.  
  518. INITIALISATION
  519.    LECTURE du FICHIER du RESEAU
  520.    DETERMINATION du NOMBRE D'ENNEMIS
  521.         "        des positions ennemis, et joueur
  522.  
  523. TANT QUE que l'on joue à une PARTIE , effectuer:
  524.    TANT QUE la PHASE  PRINCIPALE de jeu est à effectuer, faire:
  525.      Détermination des MouVemenTs des CHASSEURS
  526.      Détermination du MouVemenT du JOUEUR
  527.         TEST de POSSIBILITE de changer de ligne pour le joueur
  528.           Si oui,
  529.             AFFICHAGE des possibilités,
  530.             CHOIX DU JOUEUR,
  531.              TEST du CHOIX de changement de ligne
  532.                Si oui, évaluation des paramétres de la nouvelle position
  533.                Si non, paramétres de mouvement inchangés
  534.           Si non, 
  535.             CHOIX du SENS de progrèssion sur la ligne en cours
  536.      Mise A Jour des coordonnées du joueur      
  537.      TEST de FIN de la PRINCIPALE PHASE
  538.        Si oui, fin de la PRINCIPALE PHASE du jeu
  539.    FIN DE LA PHASE PRINCIPALE
  540. FIN DE LA PARTIE      
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571. Liste des règles.
  572.  
  573.  
  574. Ces 13 règles ne répresentent que l'ossature du problème, completez
  575. vous-même, cela fera un excellent exercice d'initiation.
  576.  
  577. Rappel :
  578.            Ici les règles sont ordonnées pour faciliter votre
  579.            lecture, mais elles peuvent dans n'importe quel
  580.            ordre. SAD s'y retrouve du moment qu'il y a une
  581.            structure logique qui les unies. 
  582.  
  583.  
  584. Règle n° 1
  585. MAIN
  586.  INITIALISATION
  587.  TANT QUE PARTIE
  588.  
  589. Règle n° 2
  590. INITIALISATION
  591.  LECTURE FICHIER RESEAU
  592.  NBR ENNEMIS
  593.  POSITION ENNEMIS
  594.  POSITION JOUEUR
  595.  
  596. Règle n° 3
  597. TANT QUE PARTIE
  598.  PARTIE
  599.  
  600. Règle n° 4 
  601. PARTIE
  602.  TANT QUE PRINCIPALE PHASE
  603.  
  604. Règle n° 5
  605. TANT QUE PRINCIPALE PHASE
  606.  PRINCIPALE PHASE
  607.  
  608. Règle n° 6
  609. PRINCIPALE PHASE
  610.  MVT CHASSEURS
  611.  MVT JOUEUR
  612.  MAJ COORDONNEES JOUEUR
  613.  CALCUL FIN PRINCIPALE PHASE
  614.  
  615. Règle n° 7
  616. MVT JOUEUR
  617.  TEST POSSIBILITE
  618.  
  619. Règle n° 8
  620. TEST POSSIBILITE
  621.  POSSIBILITE OUI
  622.  POSSIBILITE NON
  623.  
  624.  
  625.  
  626. Règle n° 9 
  627. POSSIBILITE OUI
  628.  AFFICHAGE
  629.  CHOIX DU JOUEUR
  630.  TEST CHOIX
  631.  
  632. Règle n° 10
  633. POSSIBILITE NON
  634.  CHOIX DU SENS
  635.  
  636. Règle n° 11
  637. TEST CHOIX
  638.  CHOIX OUI
  639.  
  640. Règle n° 12      (règle à créer meme si il n'y a pas de conséquence(s))   
  641. CHOIX OUI 
  642.  
  643. Règle n°13
  644. AFFICHAGE
  645.  *PRINT "Test code"
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683. Version test générée par l'option "Génération Test".
  684.  
  685. Le code source est divisé en couche. 
  686. Une fonction à un niveau (n) ne peut etre appelée que par un 
  687. niveau inférieur, et ne peut appeler une fonction que de niveau
  688. supérieur.
  689.  
  690.                           RESEAUTEST.BAS
  691.  
  692. OUI=1 : NON=0                                                                   
  693. GOSUB MAIN                                                                      
  694. END                                                                             
  695. '--------------------------------------------------Niveau  9                    
  696.                                                                                 
  697. CALCULCHOIX:                                                                    
  698. PRINT "         CHOIX  est V ou F ?"                                            
  699. K$=""                                                                           
  700. WHILE K$=""                                                                     
  701. K$=INKEY$                                                                       
  702. WEND                                                                            
  703. CHOIX=NON                                                                       
  704. IF K$="V" THEN CHOIX=OUI                                                        
  705. RETURN                                                                          
  706.                                                                                 
  707.                                                                                 
  708. CHOIXOUI:                                                                       
  709. PRINT "         -Exécution de CHOIX OUI"                                        
  710. RETURN                                                                          
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. '--------------------------------------------------Niveau  8                    
  720.                                                                                 
  721. AFFICHAGE:                                                                      
  722. PRINT "        -Exécution de AFFICHAGE"                                         
  723. PRINT "TEST CODE"                                                               
  724. RETURN                                                                          
  725.                                                                                 
  726. CHOIXDUJOUEUR:                                                                  
  727. PRINT "        -Exécution de CHOIX DU JOUEUR"                                   
  728. RETURN                                                                          
  729.                                                                                 
  730. TESTCHOIX:                                                                      
  731.    GOSUB CALCULCHOIX                                                            
  732.    IF CHOIX=OUI THEN GOSUB CHOIXOUI                                             
  733. RETURN                                                                          
  734.                                                                                 
  735.                                                                                 
  736. CHOIXDUSENS:                                                                    
  737. PRINT "        -Exécution de CHOIX DU SENS"                                     
  738. RETURN                                                                          
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755. '--------------------------------------------------Niveau  7                    
  756.                                                                                 
  757. CALCULPOSSIBILITE:                                                              
  758. PRINT "       POSSIBILITE  est V ou F ?"                                        
  759. K$=""                                                                           
  760. WHILE K$=""                                                                     
  761. K$=INKEY$                                                                       
  762. WEND                                                                            
  763. POSSIBILITE=NON                                                                 
  764. IF K$="V" THEN POSSIBILITE=OUI                                                  
  765. RETURN                                                                          
  766.                                                                                 
  767.                                                                                 
  768. POSSIBILITEOUI:                                                                 
  769. PRINT "       -Exécution de POSSIBILITE OUI"                                    
  770.    GOSUB AFFICHAGE                                                              
  771.    GOSUB CHOIXDUJOUEUR                                                          
  772.    GOSUB TESTCHOIX                                                              
  773. RETURN                                                                          
  774.                                                                                 
  775. POSSIBILITENON:                                                                 
  776. PRINT "       -Exécution de POSSIBILITE NON"                                    
  777.    GOSUB CHOIXDUSENS                                                            
  778. RETURN                                                                          
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787. '--------------------------------------------------Niveau  6                    
  788.                                                                                 
  789. TESTPOSSIBILITE:                                                                
  790.    GOSUB CALCULPOSSIBILITE                                                      
  791.    IF POSSIBILITE=OUI THEN GOSUB POSSIBILITEOUI ELSE GOSUB POSSIBILITENON       
  792. RETURN                                                                          
  793.                                                                                 
  794. '--------------------------------------------------Niveau  5                    
  795.                                                                                 
  796. MVTCHASSEURS:                                                                   
  797. PRINT "     -Exécution de MVT CHASSEURS"                                        
  798. RETURN                                                                          
  799.                                                                                 
  800. MVTJOUEUR:                                                                      
  801. PRINT "     -Exécution de MVT JOUEUR"                                           
  802.    GOSUB TESTPOSSIBILITE                                                        
  803. RETURN                                                                          
  804.                                                                                 
  805. MAJCOORDONNEESJOUEUR:                                                           
  806. PRINT "     -Exécution de MAJ COORDONNEES JOUEUR"                               
  807. RETURN                                                                          
  808.                                                                                 
  809. CALCULFINPRINCIPALEPHASE:                                                       
  810. PRINT "     -Exécution de CALCUL FIN PRINCIPALE PHASE"                          
  811. RETURN                                                                          
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818. '--------------------------------------------------Niveau  4                    
  819.                                                                                 
  820. PRINCIPALEPHASE:                                                                
  821. PRINT "    -Exécution de PRINCIPALE PHASE"                                      
  822.    GOSUB MVTCHASSEURS                                                           
  823.    GOSUB MVTJOUEUR                                                              
  824.    GOSUB MAJCOORDONNEESJOUEUR                                                   
  825.    GOSUB CALCULFINPRINCIPALEPHASE                                               
  826. RETURN                                                                          
  827. '--------------------------------------------------Niveau  3                    
  828.                                                                                 
  829. TANTQUEPRINCIPALEPHASE:                                                         
  830. PRINCIPALEPHASE=NON                                                             
  831. WHILE PRINCIPALEPHASE=NON                                                       
  832.    GOSUB PRINCIPALEPHASE                                                        
  833. PRINT "    PRINCIPALEPHASE  est V ou F ?"                                       
  834. K$=""                                                                           
  835. WHILE K$=""                                                                     
  836. K$=INKEY$                                                                       
  837. WEND                                                                            
  838. IF K$="V" THEN PRINCIPALEPHASE=OUI                                              
  839. WEND                                                                            
  840. RETURN                                                                          
  841.                                                                                 
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850. '--------------------------------------------------Niveau  2                    
  851.                                                                                 
  852. LECTUREFICHIERRESEAU:                                                           
  853. PRINT "  -Exécution de LECTURE FICHIER RESEAU"                                  
  854. RETURN                                                                          
  855.                                                                                 
  856. NBRENNEMIS:                                                                     
  857. PRINT "  -Exécution de NBR ENNEMIS"                                             
  858. RETURN                                                                          
  859.                                                                                 
  860. POSITIONENNEMIS:                                                                
  861. PRINT "  -Exécution de POSITION ENNEMIS"                                        
  862. RETURN                                                                          
  863.                                                                                 
  864. POSITIONJOUEUR:                                                                 
  865. PRINT "  -Exécution de POSITION JOUEUR"                                         
  866. RETURN                                                                          
  867.                                                                                 
  868. PARTIE:                                                                         
  869. PRINT "  -Exécution de PARTIE"                                                  
  870.    GOSUB TANTQUEPRINCIPALEPHASE                                                 
  871. RETURN                                                                          
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884. '--------------------------------------------------Niveau  1                    
  885.                                                                                 
  886. INITIALISATION:                                                                 
  887. PRINT " -Exécution de INITIALISATION"                                           
  888.    GOSUB LECTUREFICHIERRESEAU                                                   
  889.    GOSUB NBRENNEMIS                                                             
  890.    GOSUB POSITIONENNEMIS                                                        
  891.    GOSUB POSITIONJOUEUR                                                         
  892. RETURN                                                                          
  893.                                                                                 
  894. TANTQUEPARTIE:                                                                  
  895. PARTIE=NON                                                                      
  896. WHILE PARTIE=NON                                                                
  897.    GOSUB PARTIE                                                                 
  898. PRINT "  PARTIE  est V ou F ?"                                                  
  899. K$=""                                                                           
  900. WHILE K$=""                                                                     
  901. K$=INKEY$                                                                       
  902. WEND                                                                            
  903. IF K$="V" THEN PARTIE=OUI                                                       
  904. WEND                                                                            
  905. RETURN                                                                          
  906.                                                                                 
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917. '--------------------------------------------------Niveau  0                    
  918.  
  919.                                                                                
  920. MAIN:                                                                           
  921. PRINT "-Exécution de MAIN"                                                      
  922.    GOSUB INITIALISATION                                                         
  923.    GOSUB TANTQUEPARTIE                                                          
  924. RETURN                                                                          
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.               Version de RESEAU obtenue par la génération pure.
  969.  
  970.  
  971. OUI=1 : NON=0                                                                   
  972. GOSUB MAIN                                                                      
  973. END                                                                             
  974. '--------------------------------------------------Niveau  9                    
  975.                                                                                 
  976. CALCULCHOIX:                                                                    
  977. RETURN                                                                          
  978.                                                                                 
  979.                                                                                 
  980. CHOIXOUI:                                                                       
  981. RETURN                                                                          
  982. '--------------------------------------------------Niveau  8                    
  983.                                                                                 
  984. AFFICHAGE:                                                                      
  985. PRINT "TEST CODE"                                                               
  986. RETURN                                                                          
  987.                                                                                 
  988. CHOIXDUJOUEUR:                                                                  
  989. RETURN                                                                          
  990.                                                                                 
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002. TESTCHOIX:                                                                      
  1003.    GOSUB CALCULCHOIX                                                            
  1004.    IF CHOIX=OUI THEN GOSUB CHOIXOUI                                             
  1005. RETURN                                                                          
  1006.                                                                                 
  1007.                                                                                 
  1008. CHOIXDUSENS:                                                                    
  1009. RETURN                                                                          
  1010. '--------------------------------------------------Niveau  7                    
  1011.                                                                                 
  1012. CALCULPOSSIBILITE:                                                              
  1013. RETURN                                                                          
  1014.                                                                                 
  1015.                                                                                 
  1016. POSSIBILITEOUI:                                                                 
  1017.    GOSUB AFFICHAGE                                                              
  1018.    GOSUB CHOIXDUJOUEUR                                                          
  1019.    GOSUB TESTCHOIX                                                              
  1020. RETURN                                                                          
  1021.                                                                                 
  1022. POSSIBILITENON:                                                                 
  1023.    GOSUB CHOIXDUSENS                                                            
  1024. RETURN                                                                          
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036. '--------------------------------------------------Niveau  6                    
  1037.                                                                                 
  1038. TESTPOSSIBILITE:                                                                
  1039.    GOSUB CALCULPOSSIBILITE                                                      
  1040.    IF POSSIBILITE=OUI THEN GOSUB POSSIBILITEOUI ELSE GOSUB POSSIBILITENON       
  1041. RETURN                                                                          
  1042.                                                                                 
  1043. '--------------------------------------------------Niveau  5                    
  1044.                                                                                 
  1045. MVTCHASSEURS:                                                                   
  1046. RETURN                                                                          
  1047.                                                                                 
  1048. MVTJOUEUR:                                                                      
  1049.    GOSUB TESTPOSSIBILITE                                                        
  1050. RETURN                                                                          
  1051.                                                                                 
  1052. MAJCOORDONNEESJOUEUR:                                                           
  1053. RETURN                                                                          
  1054.                                                                                 
  1055. CALCULFINPRINCIPALEPHASE:                                                       
  1056. RETURN                                                                          
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071. '--------------------------------------------------Niveau  4                    
  1072.                                                                                 
  1073. PRINCIPALEPHASE:                                                                
  1074.    GOSUB MVTCHASSEURS                                                           
  1075.    GOSUB MVTJOUEUR                                                              
  1076.    GOSUB MAJCOORDONNEESJOUEUR                                                   
  1077.    GOSUB CALCULFINPRINCIPALEPHASE                                               
  1078. RETURN                                                                          
  1079. '--------------------------------------------------Niveau  3                    
  1080.                                                                                 
  1081. TANTQUEPRINCIPALEPHASE:                                                         
  1082. PRINCIPALEPHASE=NON                                                             
  1083. WHILE PRINCIPALEPHASE=NON                                                       
  1084.    GOSUB PRINCIPALEPHASE                                                        
  1085. WEND                                                                            
  1086. RETURN                                                                          
  1087.                                                                                 
  1088. '--------------------------------------------------Niveau  2                    
  1089.                                                                                 LECTUREFICHIERRESEAU:           
  1090. RETURN                                                                                                                             
  1091. NBRENNEMIS:                                                                     
  1092. RETURN                                                                          
  1093.                                                                                 POSITIONENNEMIS:                                                                
  1094. RETURN                                                                          
  1095.                                                                                 POSITIONJOUEUR:                                                                 
  1096. RETURN                                                                          
  1097.                                                                                 
  1098. PARTIE:                                                                         
  1099.    GOSUB TANTQUEPRINCIPALEPHASE                                                 
  1100. RETURN                                                                          
  1101. '--------------------------------------------------Niveau  1                    
  1102.                                                                                 
  1103. INITIALISATION:                                                                 
  1104.    GOSUB LECTUREFICHIERRESEAU                                                   
  1105.    GOSUB NBRENNEMIS                                                             
  1106.    GOSUB POSITIONENNEMIS                                                        
  1107.    GOSUB POSITIONJOUEUR                                                         
  1108. RETURN                                                                          
  1109.                                                                                 
  1110. TANTQUEPARTIE:                                                                  
  1111. PARTIE=NON                                                                      
  1112. WHILE PARTIE=NON                                                                
  1113.    GOSUB PARTIE                                                                 
  1114. WEND                                                                            
  1115. RETURN                                                                          
  1116.                                                                                 
  1117. '--------------------------------------------------Niveau  0                    
  1118.                                                                                 
  1119. MAIN:                                                                           
  1120.    GOSUB INITIALISATION                                                         
  1121.    GOSUB TANTQUEPARTIE                                                          
  1122. RETURN                                                                          
  1123.  
  1124.  
  1125.